package com.cjh.scala

/**
 * Created by Administrator on 2016/6/11 0011.
 */
class Basic5 {

}

object Basic5 extends App {
  val a = 1

  //模式匹配：
  // val result= a match {
  //    case 1=>"one"
  //    case 2=>"two"
  //    case _=>"some others"
  //  }

  // match和if搭配
//  val result = a match {
//    case i if (i == 1) => "one"
//    case i if (i == 2) => "two"
//    case _ => "one"
//  }
//  println(result)

  //类型匹配
//  def t(obj:Any)=obj match{
//    case obj:Int=>"int"
//    case obj:String=>"string"
//    case _=>"unknown type!!"
//  }
//  println(t("a"))
//  println(t(1))

  //case class不需要new，多用于模式匹配
//  val book=Book("bob","java book")
//  val result=book match {
//    case Book(name,author)=>println("book")
//    case _=>println("other")
//  }
  //高阶函数
//  var list=List(1,2,3,4,5)
//  println(list.map((x:Int)=>2*x))//map是对集合中的每一个元素处理 迭代
//  println(list.map((x)=>2*x))
//  println(list.map(2*_))

  //元组
//  val hostport=("localhost","8888")
//  println(hostport._1+"::"+hostport._2) //元组的访问
  //map
//  val m=Map("a"->1,"b"->2)
//  println(m)
//  println(m.get("a"))
//  println(m.get("a").get)//返回的是Option类型
//  println(m.get("cc").getOrElse("none"))//这样写是为了避免出错

  val list=List(1,2,3,4,5)
//  list.foreach((x:Int)=>2*x)
// val ff= list.filter(_%2==1) //filter 过滤
//  println(ff)
//  println(list)
//  val vals=List("a","b","c","d")
//  println(list.zip(vals))//拉链操作
//
//  println(list.partition(_%2==0)) //列表分割
  println(List(List(1,2,3,4),List("a","b")).flatten)//扁平化
  println(List(List(1,3,7,9),List(2,4,6,8)).flatMap(x=>x.map(_*2))) //先压扁，再对压扁的每一个元素操作
}
case class Book(name:String,author:String)

